home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: vmsnet.sources.games
- Path: uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!mary.fordham.edu!areid
- From: areid@mary.fordham.edu (Darin Reid)
- Subject: Qix.04 -- arcade based game
- Organization: Fordham University
- Message-ID: <25FEB199219011280@mary.fordham.edu>
- News-Software: VAX/VMS VNEWS 1.41
- Sender: news@ctr.columbia.edu (The Daily Lose)
- Date: Tue, 25 Feb 1992 23:01:00 GMT
-
- -+-+-+-+-+-+-+-+ START OF PART 4 -+-+-+-+-+-+-+-+
- X Last_Start_Creat_Y := Last_You_Y;
- X Dir_When_Start_Creat := Dir_You;
- X end;
- X `09 Screen`5BX,y`5D.Sym := Correct_Sym(X,Y,You_X,You_Y);
- X `09 Screen`5BX,Y`5D.wall := Created;
- X Creating_wall := True;
- X Last_You_X := X;
- X Last_You_Y := Y;
- X end else begin`20
- X You_X := X;
- X You_Y := Y;
- X end;
- X end;
- X Inside : Begin
- X If Creating_wall Then begin
- X `7B Have Created A Box `7D
- X Creating_wall := False;
- X Can_Create_wall := False;
- X Screen`5BX,Y`5D.Sym := Correct_Sym(X,Y,You_X,You_Y);
- X Screen`5BX,Y`5D.Wall := Created;
- X Pos(X,Y,Screen`5BX,Y`5D.Sym);
- X Pos(You_X,You_Y,You);
- X Screen`5BYou_X,You_Y`5D.Sym := Correct_Sym(You_X,You_Y,You
- V_X,You_Y);
- X Screen`5BYou_X,You_Y`5D.Wall := Created;
- X`09`09 Break_Buff;
- X Cal_Inside;
- X If Moving_Extra_Greebly Then`20
- X Pos(Extra_Greeb_X,Extra_Greeb_Y,Screen`5BExtra_Greeb_X,E
- Vxtra_Greeb_Y`5D.sym);
- X Moving_Extra_Greebly := False;
- X If Amt_Filled_In > 1228 Then Begin
- X Score := Score + Amt_Filled_In + ( Amt_Filled_In - 1228
- V);
- X Break_Buff;
- X Write(Esc,'Y',Chr(55),CHr(40),(Amt_Filled_In * 100 / 16
- V38 ):5:2);
- X Writeln(Esc,'Y',Chr(55),Chr(53),(Score):5,Esc,'H');
- X`09`09 Sleep(3,0);
- X Initalise_Screen;
- X end else begin
- X Break_Buff;
- X Write(Esc,'Y',Chr(55),CHr(40),(Amt_Filled_In * 100 / 163
- V8 ):5:2);
- X Writeln(Esc,'Y',Chr(55),Chr(53),(Score+Amt_Filled_In):5,
- VEsc,'H');
- X Last_You_X := X;
- X Last_You_Y := Y;
- X end;
- X end else`20
- X If Not VAlid_Move Then begin
- X You_X := X;
- X You_Y := Y;
- X end Else begin
- X Last_You_X := X;
- X Last_You_Y := Y;
- X end;
- X `20
- X END;
- X Created : Begin
- X If Not Moving_Extra_Greebly Then Begin
- X Moving_Extra_Greebly := True;
- X Extra_Greeb_X := Start_Creat_X;
- X Extra_Greeb_Y := Start_Creat_Y;
- X Last_Extra_Greeb_X := Last_Start_Creat_X;
- X Last_Extra_Greeb_Y := Last_Start_Creat_Y;
- X Pos(Extra_Greeb_X,Extra_Greeb_Y,'*');
- X end;
- X You_X := X;
- X You_Y := Y;
- X end;
- X OutSide : Begin
- X You_X := X;
- X You_Y := Y;
- X end;
- Xend `7B Case `7D;
- X
- XIf ((You_X=Snake_Head_X) and (You_Y=Snake_Head_Y)) or`20
- X ((You_X=Clock_Greeb_X) and (You_Y=Clock_Greeb_Y)) or`20
- X ((You_X=Anti_Greeb_X) and (You_Y=Anti_Greeb_Y)) Then`20
- X Died := True;
- XIf Len_Snake > 2 Then`20
- X Screen`5BSnake_Tail_X,Snake_Tail_Y`5D.Sym := Save_ch;
- XPos(X,Y,Screen`5BX,Y`5D.Sym); `20
- XPos(You_X,You_Y,You);
- Xend;
- X
- XProcedure Get_move;
- X
- Xvar ch : char;
- X
- XBegin
- X CAse TT_1_Char_Now Of`20
- X`7B' '`7D 32 : Can_Create_Wall := True;
- X`7B'4'`7D 52 : Begin
- X Move_X := 0;
- X Move_Y := -1;
- X end;
- X`7B'6'`7D 54 : Begin
- X Move_X := 0;
- X Move_Y := 1;
- X end;
- X`7B'8'`7D 56 : begin
- X Move_Y :=0;
- X Move_X :=-1;
- X end;
- X`7B'2'`7D 50 : Begin
- X Move_Y := 0;
- X Move_X := 1;
- X end;
- X`7B'e','E'`7D 101,69 : Goto 9999;
- X Otherwise `7B Noyhing `7D
- X end;
- Xend;
- X `20
- X
- XProcedure Have_Died;
- X
- XVar Dummy,LSudo_X,LSudo_Y,Sudo_X,Sudo_Y : Integer;
- X Save_Sym : Char;
- X
- XBegin
- XBreak_Buff;
- XDied := False;
- XLives := Lives - 1;
- XIf Lives > 0 Then Begin
- X If Creating_wall Then Begin
- X If Moving_Extra_Greebly Then`20
- X Pos(Extra_Greeb_X,Extra_Greeb_Y,Screen`5BExtra_Greeb_X,Extra_Greeb_
- VY`5D.Sym);
- X Moving_Extra_Greebly := False;
- X Save_sym := Screen`5BSnake_Tail_X,Snake_Tail_Y`5D.Sym;
- X Sudo_X := Last_You_X;
- X Sudo_Y := Last_You_Y;
- X LSudo_X := You_X;
- X LSudo_Y := You_Y;
- X Pos(LSudo_X,LSudo_Y,Screen`5BYou_X,You_Y`5D.Sym);
- X Move_Clockwise(Sudo_X,Sudo_Y,Lsudo_X,LSudo_Y);
- X While Screen`5BSudo_X,Sudo_Y`5D.Wall <> Inside do begin
- X Pos(LSudo_X,LSudo_Y,Blank);
- X Screen`5BLSudo_X,LSudo_Y`5D.Sym := Blank;
- X Screen`5BLSudo_X,LSudo_Y`5D.Wall := Other;
- X Move_Clockwise(Sudo_X,Sudo_Y,Lsudo_X,LSudo_Y);
- X end;
- X Creating_wall := False;
- X If ( Snake_Head_X <> Snake_Tail_X ) or ( Snake_Head_Y <> Snake_Tail_Y
- V ) Then`20
- X Screen`5BSnake_Tail_X,Snake_Tail_Y`5D.Sym := '%';
- X Screen`5BLSudo_X,LSudo_Y`5D.Sym := Correct_sym(LSudo_X,LSudo_Y,LSudo_X
- V,LSudo_Y);
- X If ( Snake_Head_X <> Snake_Tail_X ) or ( Snake_Head_Y <> Snake_Tail_Y
- V ) Then`20
- X Screen`5BSnake_Tail_X,Snake_Tail_Y`5D.Sym := Save_sym;
- X Screen`5BLSudo_X,LSudo_Y`5D.Wall := Inside;
- X Pos(LSudo_X,LSudo_Y,Screen`5BLSudo_X,LSudo_Y`5D.Sym);
- X You_X := Start_Creat_X;
- X You_Y := Start_Creat_Y;
- X Last_You_X := Last_Start_Creat_X;
- X Last_You_Y := Last_Start_Creat_Y;
- X Dir_You := Dir_When_Start_Creat;
- X end;
- X Write_Buff(chr(7));
- X Pos(Snake_Head_X,Snake_Head_Y,Qix_Head);
- X Pos(You_X,You_Y,You);
- X Pos(Clock_Greeb_X,Clock_Greeb_Y,Screen`5BClock_Greeb_X,Clock_Greeb_Y`5D.S
- Vym);
- X Pos(Anti_Greeb_X,Anti_Greeb_Y,Screen`5BAnti_Greeb_X,Anti_Greeb_Y`5D.Sym);
- X Break_Buff;
- X Write(Esc,'Y',chr(31+24),chr(31+34),Esc,'K');
- X For Dummy := 1 to Lives Do`20
- X Write(' O');
- X Writeln(Esc,'H');
- X Can_Create_wall := False;
- X For Dummy := 1 to 4 do`20
- X Move_Greeblys;
- Xend; `20
- Xend;
- X
- XBegin
- X Initalise;
- X Break_Buff;
- X Repeat
- X Sleep_Start;
- X Get_move;
- X Move_You;
- X If Not Died Then Begin
- X Move_snake;
- X Move_Greeblys;`20
- X If ( Rand(Level) >= 4 ) and ( Not Died )Then Begin
- X Move_Greeblys;
- X If ( rand(Level) >= 5 ) and ( Not Died ) Then Begin
- X Move_Snake;
- X If ( rand(Level) >= 6 ) and ( Not Died ) Then Begin
- X Move_Greeblys;
- X If ( rand(Level) >= 7 ) and ( Not Died ) Then Begin
- X Move_snake;
- X If ( rand(Level) >= 8 ) and ( Not Died ) Then Begin
- X Move_Greeblys;
- X If ( rand(Level) >= 9 ) and ( Not Died ) Then Begin
- X Move_Snake;
- X end;
- X end;
- X end;
- X end;
- X end;
- X end;
- X end;
- X Break_Buff;
- X Sleep_wait;
- X If Died Then`20
- X Have_Died;
- X until Lives <= 0;
- X `20
- X 9999: `7B This Goto Was Not My Idea only Used For Abortive Exit `7D
- X Break_Buff;
- X writeln(Esc,'G',Esc,'H',Esc,'J',Esc,'<');
- X Score := Score + Amt_Filled_In;
- X TT_Cancel;
- X TopTen(Score);
- Xend.
- $ CALL UNPACK QIX.PAS;1 606979058
- $ create 'f'
- X`1B`5BH`1B`5BJ`1B(B`1B`5B0m
- X`1B`5B1;1H`1B(0lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
- Vqqqqqqqqqqqqqqqqqqk
- X`1B`5B2;1Hx`1B`5B2;80Hx`1B`5B3;1Hx Y`1B(Bou - O`1B`5B3;32H`1B(0lqq
- Vk qwq qk l`1B(B- Qix `1B(0q `60qqqqqq
- X`1B`5B3;67Hk lqqqqq x`1B`5B4;1Hx`1B`5B4;31Hlj x x mwj`1B`5B4;64Hlq
- Vqj x`1B`5B4;80Hx`1B`5B5;1Hx F`1B(Buse
- X`1B`5B5;12H - *`1B`5B5;31H`1B(0x kx x lvk`1B`5B5;64Hmqqqqj`1B`5B5;
- V80Hx`1B`5B6;1Hx`1B`5B6;31Hmqqvvk qvq qj mq`1B`5B6;80H
- X`1B`5B6;80Hx`1B`5B7;1Hx`1B`5B7;36Hm`1B`5B7;80Hx`1B`5B8;1Hx F`1B(Bence Off
- V The Screen Trying To Avoid The Hazzards
- X`1B`5B8;54H.`1B`5B8;80H`1B(0x`1B`5B9;1Hx`1B`5B9;80Hx`1B`5B10;1Hx H`1B(Bazz
- Vards : Qix - Kills If Touches The Line
- X`1B`5B10;51H You Are Drawing`1B`5B10;80H`1B(0x`1B`5B11;1Hx`1B`5B11;18HF`1B(B
- Vuse - Traverses The Outside Killing On Con
- X`1B`5B11;62Htact`1B`5B11;80H`1B(0x`1B`5B12;1Hx`1B`5B12;80Hx`1B`5B13;1Hx`1B`5
- VB13;80Hx`1B`5B14;1Hx M`1B(Bovement : 8 - Up`1B`5B14;43H
- X`1B`5B14;43HNew Screen `1B(0`60 O`1B(Bnce 75% Fenced Off `1B(0x`1B`5B15;
- V1Hx`1B`5B15;80Hx`1B`5B16;1Hx`1B`5B16;13H4 `1B(B- Lef
- X`1B`5B16;20Ht 6 - Right`1B`5B16;43HHigher Scoring For Areas`1B`5B16;80H`1
- VB(0x`1B`5B17;1Hx`1B`5B17;80Hx
- X`1B`5B18;1Hx`1B`5B18;20H2 `1B(B- Down`1B`5B18;46HGreater Than 75%.`1B`5B18;8
- V0H`1B(0x`1B`5B19;1Hx`1B`5B19;80Hx
- X`1B`5B20;1Hx D`1B(Braw Fence : < Space Bar >`1B`5B20;43H`1B`5B7m Hit < R
- Veturn > To Play `1B`5B0m E : Exit `1B(0x
- X`1B`5B21;1Hx`1B`5B21;80Hx`1B`5B22;1Hx`1B`5B22;80Hx`1B`5B23;1Hmqqqqqqqqqqqqqq
- Vqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq`1B`5B1;1H
- X`1B`5B23;57Hqqqqqqqqqqqqqqqqqqqqqqqj`1B`5B1;1H
- X`1B*
- $ CALL UNPACK QIX.SCN;1 824521603
- $ create 'f'
- XC
- X`09SUBROUTINE`09TOPTEN(ISCORE)
- XC
- X`09PARAMETER ESC = 27
- X`09PARAMETER MAX_SCORE = 11`09!MAX NUMBER SCORES HELD + 1
- X`09INTEGER`09ISCORE,ISCO,IHISCR,ISCOAT,ErrNum
- X`09LOGICAL*1 CHAMP(30),PLayer(20)
- X`09INTEGER`09NUM_Games,SCORES(MAX_SCORE),SORT,ASCTIM_DESCR(2)
- X Real*8 Date_Quad(Max_Score),Now_Time
- X`09LOGICAL*1 NAMES(20,MAX_SCORE),TEMP(20),ASCTIM(17)
- XC
- X Write(5,111)esc
- X111 Format(X,A1,'<')
- X`09AscTim_descr(2) = %LOC(ASCTIM(1))
- X`09AscTim_Descr(1) = 17 ! Lenght`20
- X1`09OPEN(UNIT=4,FILE='GAMES:QIX.TOP',FORM='UNFORMATTED',
- X`091 RECORDTYPE='FIXED',STATUS='OLD',RECL=512,IoStat=ErrNum)
- X If (ERRNUM.EQ.30) Goto 50
- X If (ERRNUM.NE.0 ) Goto 999
- XC`09GET TOP TEN SCORES
- XC
- X`09READ`09(4) Num_Games,SCORES,Date_Quad,NAMES
- X Num_Games = Num_Games + 1
- X`09IHISCR = SCORES(1)
- XC`09Copy Over Score Player Got`20
- X`09SCORES(MAX_SCORE)=ISCORE
- X`09Call sys$GETTIM(NOw_Time)
- X`09DATe_Quad(MAx_Score) = Now_Time
- XC`09Copy Over His Name`20
- X`09DO 2 J=1,20
- X `09 NAMES(J,MAX_SCORE)= ' '
- X2`09CONTINUE
- X3`09SORT=0
- X`09DO 5 I=1,MAX_SCORE-1
- X`09IF (SCORES(I).GE.SCORES(I+1)) GO TO 5
- X`09SORT=SCORES(I)
- X`09SCORES(I)=SCORES(I+1)
- X`09SCORES(I+1)=SORT
- X`09NOW_Time = Date_Quad(I)
- X Date_Quad(I) = Date_Quad(I + 1)
- X Date_Quad(I+1) = Now_Time
- X`09SORT=1
- X`09DO 4 J=1,20
- X`09TEMP(J)=NAMES(J,I)
- X`09NAMES(J,I)=NAMES(J,I+1)
- X`09NAMES(J,I+1)=TEMP(J)
- X4`09CONTINUE
- X5`09CONTINUE
- X`09IF (SORT.NE.0) GO TO 3
- XC
- XC
- X WRITE (5,409),ESC,ESC
- X ISCO=ISCORE
- X`09IF`09(ISCORE.GT.IHISCR) GO TO 10`09!Who is champ.
- X`09ISCORE=ISCORE/200
- X`09IF`09(ISCORE.EQ.0) WRITE (5,410)
- X`09IF`09(ISCORE.EQ.1) WRITE (5,411)
- X`09IF`09(ISCORE.EQ.2) WRITE (5,412)
- X`09IF`09(ISCORE.EQ.3) WRITE (5,413)
- X`09IF`09(ISCORE.EQ.4) WRITE (5,414)
- X`09IF`09(ISCORE.EQ.5) WRITE (5,415)
- X`09IF`09(ISCORE.EQ.6) WRITE (5,416)
- X`09IF`09(ISCORE.EQ.7) WRITE (5,417)
- X`09IF`09(ISCORE.EQ.8) WRITE (5,418)
- X`09IF`09(ISCORE.EQ.9) WRITE (5,419)
- X`09IF`09(ISCORE.EQ.10) WRITE (5,420)
- X`09IF`09(ISCORE.EQ.11) WRITE (5,421)
- X`09IF`09(ISCORE.EQ.12) WRITE (5,422)
- X`09IF`09(ISCORE.EQ.13) WRITE (5,423)
- X`09IF`09(ISCORE.EQ.14) WRITE (5,424)
- X`09IF`09(ISCORE.EQ.15) WRITE (5,425)
- X`09IF`09(ISCORE.EQ.16) WRITE (5,426)
- X`09IF`09(ISCORE.EQ.17) WRITE (5,427)
- X`09IF`09(ISCORE.EQ.18) WRITE (5,428)
- X`09IF`09(ISCORE.EQ.19) WRITE (5,429)
- X`09IF`09(ISCORE.EQ.20) WRITE (5,430)
- X`09IF`09(ISCORE.EQ.21) WRITE (5,431)
- X`09IF`09(ISCORE.EQ.22) WRITE (5,432)
- X`09IF`09(ISCORE.EQ.23) WRITE (5,433)
- X`09IF`09(ISCORE.EQ.24) WRITE (5,434)
- X`09IF`09(ISCORE.EQ.25) WRITE (5,435)
- X`09IF`09(ISCORE.EQ.26) WRITE (5,436)
- X`09IF`09(ISCORE.EQ.27) WRITE (5,437)
- X`09IF`09(ISCORE.EQ.28) WRITE (5,438)
- X`09IF`09(ISCORE.EQ.29) WRITE (5,439)
- X`09If (ISCORE.GE.30) WRITE (5,440)
- XC
- X`09GO TO 20
- X10`09WRITE`09(5,500)
- X20`09WRITE`09(5,250) Num_Games
- XC
- X21`09CONTINUE
- X ISCOAT = 0
- X `09DO 28 I=1,10,1
- X`09 If (ISCO.EQ.SCORES(I)) ISCOAT = I
- X If (Scores(i) .GT. 0 ) Then`20
- X`09`09Call sys$Asctim(,asctim_Descr,Date_Quad(I),%Val(0))
- X `09`09WRITE`09(5,300)I,(NAMES(J,I),J=1,20),SCORES(I),ASCTIM
- X`09 end If`20
- X28`09Continue
- X`09Write(5,29),ISCO
- X29`09Format(X,/,' Your Score ',I6)
- X IF (ISCOAT.EQ.0.OR.SCORES(11).EQ.ISCO) GOTO 49
- X Write(5,30)esc,ISCOAT+10,ESC,ISCOAT+10,ESC,ISCOat+10
- X30`09Format('$',A1,'`5B',I2,';1H=>', `20
- X`091 A1,'`5B',I2,';59H<= Enter Name',
- X`092 A1,'`5B',I2,';8H')
- X Accept 31,ILen,PLayer
- X31`09Format(Q,20A1)
- X`09DO 32 J=1,20
- X If ((PLAYER(J).LT.65).OR.
- X`091 (PLAYER(J).GT.90.And.PLAYER(J).LT.97).Or.
- X`092 (PLAYER(J).Gt.122)) PLAYER(J) = ' '
- X `09 NAMES(J,ISCOAT)=PLAYER(J)
- X32`09CONTINUE
- X49`09REWIND(4)
- X`09WRITE(4) ,Num_Games,SCORES,Date_Quad,NAMES
- X`09close (unit = 4)
- X Write(5,36),esc
- X36`09Format(X,A1,'`5B23;1H')
- X999`09Continue
- X`09RETURN
- X50`09Write(5,51),Esc,Esc
- X51 FORMAT(X,A1,'`5B2J',A1,'`5B1;1HPlease Wait ...')
- X Call Sleep(4)
- X Goto 1
- XC
- X100`09FORMAT`09(I6)
- X200`09FORMAT`09(20A1)
- X201`09format (A)
- X250`09FORMAT`09(///20X,' QIX Super League ',I13,' Games',/,
- X + 20X,' ================ ',//,
- X + 8X,'Player',19x,'Score',6X,'Date',4X,'Time',/)
- X300`09FORMAT`09(1X,I5,2X,20A1,4X,I6,2X,17A1)
- X409`09FORMAT (X,A,'`5B2J',A,'`5B1;1H') `09`09! CLEAR AND HOME`20
- X410`09FORMAT`09(20X'** What Utter Crap ***')`09`09!0-199
- X411`09FORMAT`09(20X'** I don''t believe it **')`09`09!200-399
- X412`09FORMAT`09(20X'** Rubbish !! **')`09`09!400-599
- X413`09FORMAT`09(20X'** What can I say **')`09`09!600-799
- X414`09FORMAT`09(20X'** Four figures one day **')`09!800-999
- X415`09FORMAT`09(20X'** Past the magic thousand **')`09!1000-1199
- X416`09FORMAT`09(20X'** Must try harder **')`09`09!1200-1399
- X417`09FORMAT`09(20X'** Well I suppose you''re trying **') !1400-1599
- X418`09FORMAT`09(20X'** Come on **')`09`09`09!1600-1799
- X419`09FORMAT`09(20X'** Almost there **')`09`09!1800-1999
- X420`09FORMAT`09(20X'** WOW! over 2000 **')`09`09!2000-2199
- X421`09FORMAT`09(20X'** Are you a novice? **')`09`09!2200-2399
- X422`09FORMAT`09(20X'** Getting Better **')`09`09!2400-2599
- X423`09FORMAT`09(20X'** Keep on trying **')`09`09!2600-2799
- X424`09FORMAT`09(20X'** 3000 One of these days **')`09!2800-2999
- +-+-+-+-+-+-+-+- END OF PART 4 +-+-+-+-+-+-+-+-
-
-
- __________
- Darin Reid
- Internet: Areid@Mary.Fordham.Edu
- Bitnet: Areid@Fordmulc
- Phone: (212) 749-8187
-